package com.service;

import com.domain.entity.User;
import com.domain.req.*;
import com.github.pagehelper.PageInfo;

/**
 * @author caishenao
 * @description 针对表【user】的数据库操作Service
 * @createDate 2023-10-12 20:12:53
 */
public interface UserService {


    /**
     * 注册用户
     *
     * @param registerReq 注册请求
     */
    void register(RegisterReq registerReq);

    /**
     * 用户登录并生成token
     *
     * @param loginReq 登录请求
     * @return 登录成功生成的token
     */
    String login(LoginReq loginReq);

    /**
     * 分页查询用户信息
     *
     * @param pageReq 分页请求
     * @param user 用户信息
     */
    PageInfo<User> pageList(PageReq pageReq, User user);

    /**
     * 判断当前用户为管理员
     *
     * @return true:管理员;false:普通用户
     */
    Boolean isAdmin();

    /**
     * 获取用户信息
     *
     * @return 用户信息
     */
    User info();

    /**
     * 根据id删除用户
     *
     * @param id 用户id
     */
    void deleteById(Integer id);

    /**
     * 修改用户信息
     *
     * @param userUpdateReq 用户信息修改
     */
    void updateById(UserUpdateReq userUpdateReq);

    /**
     * 修改密码
     *
     * @param changePasswordReq 要修改的密码请求
     */
    void changePassword(ChangePasswordReq changePasswordReq);

    /**
     * 为用户充值
     *
     * @param registerReq 充值请求
     */
    void recharge(RechargeReq registerReq);

    /**
     * 根据用户id查询用户信息
     * @param id 用户id
     * @return 用户信息
     */
    User getUserById(Integer id);
}
